    .text                     # Start text section
    #.balign 4                # align section to 4 bytes - which is also the default?
    .global solve         # define global function symbol
solve:
 mv a3, a0 # Save start

loop:
 vsetvli a1, x0, e8, m8, ta, ma # Vector of bytes of maximum length
 vle8ff.v v8, (a3) # Load bytes
 csrr a1, vl # Get bytes read
 vmseq.vi v0, v8, 0 # Set v0[i] where v8[i] = 0
 vfirst.m a2, v0 # Find first set bit
 add a3, a3, a1 # Bump pointer
 bltz a2, loop # Not found?
 add a0, a0, a1 # Sum start + bump
 add a3, a3, a2 # Add index
 sub a0, a3, a0 # Subtract start address+bump
 ret
